package com.udp;

import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

/**UDP 通信的实现  传递自定义对象类型
 * 创建服务端
 * 接收客户端发来的消息*/
public class ObjectTypeServer02 {
    public static void main(String[] args) {
        ObjectInputStream ois = null;//对象输入流
        DatagramSocket ds = null;//用于发送或接收数据包
        try{
            //首先监听端口，再创建字节数组，封装数据，最后接收
            ds = new DatagramSocket(9999);
            byte[] b = new byte[1024];
            DatagramPacket dp  = new DatagramPacket(b,b.length);
            ds.receive(dp);
            //实例化对象输入流  将传入来的字节数组转为对象类型
            ois = new ObjectInputStream(new ByteArrayInputStream(dp.getData()));
            //readObject() 读取对象的方法
            System.out.println(ois.readObject());

        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(ds != null){
                ds.close();
            }
            if(ois != null){
                try {
                    ois.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
